/*
 *  @ProductName@
 *  Copyright (C) @CopyrightYear@
 *    National Institute of Advanced Industrial Science and Technology (AIST)
 *    Registration Number: @AISTRegistrationNumber@
 *
 * This program is free software: you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation, either version 3 of the License, or
 * (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 */

package jp.go.aist.six.vuln.model.scap.vulnerability;

import jp.go.aist.six.vuln.model.scap.core.CheckReference;
import jp.go.aist.six.vuln.model.scap.cpe.Platform;
import jp.go.aist.six.vuln.model.scap.patch.Patch;
import java.util.Collection;






/**
 * A single fix action should only cover a single patch application,
 * software update, configuration change, or external fix.
 * Dependencies should be documented by using
 * the "nextFixAction" to point to a recursive list
 * of fix actions.
 *
 * @author	Akihito Nakamura, AIST
 * @version $Id: FixAction.java 5 2010-05-15 09:58:30Z nakamura5akihito $
 */
public class FixAction
{

    private Patch  _patch;
    private VulnerabilityReference  _configurationRemediation;

    /**
     * CPE name of the software update package.
     */
    private Collection<String>  _softwareUpdate;    //{CpeNamePattern}
    private Collection<String>  _notes;
    private Collection<String>  _deprecatedBy;  //{CpeNamePattern}
    private Collection<FixAction>  _nextFixAction;
    private Collection<ToolConfiguration>  _fixActionToolConfiguration;
    private Collection<Platform>  _applicableConfigration;

    /**
     * States whether the fix action fully avoids the risk
     * associated with the vulnerability or reduces risk to some extent.
     */
    private FixEffectiveness  _effectiveness;

    /**
     * Describes or points to the check/test (either OVAL or other)
     * that this particular fix action addresses.
     * E.G. applying this fix will change the value of this test result.
     */
    private Collection<CheckReference>  _applicableCheck;
    private FixActionDescription  _fixActionDescription;    //{required}
    private FixActionType  _fixActionType;  //{required}

    /**
     * Unique value within the source.
     * Will be used with the source element to serve as a global unique identifier.
     */
    private String  _id;    //{required}

    /**
     * Should be a URI-like -- e.g. inverted DNS address e.g mil.jtf-gno.
     */
    private String  _source;    //{required, URI}

}
// FixAction
